var mongoose=require('mongoose');
var Schema=mongoose.Schema;
var config=require('../config');
var db=mongoose.createConnection(config.db_url);
var User1=require('./user')
db.on('error',function(error){
    console.log(error);
});

db.model('user',User1.userSchema);
var relativeSchema=new Schema({
    applyUser:{type:Schema.Types.ObjectId,ref:'user'},
    respondentUser:{type:Schema.Types.ObjectId,ref:'user'},
    applyFlag:{type:Number,default:0},          //申请标识：0-申请未接受 1-申请已接受 2-拒绝接受
    applyMessage:String,         //验证信息
    applyDate:{type:Date,default:Date.now}
});
//users---对应数据库表名
var Relative=db.model('Relative',relativeSchema);

/**
 * 根据传入的条件查找
 */

Relative.prototype.findByRelative=function(options,callback){
    Relative.findOne(options,function(err,data){
        return callback(err,data);
    })
}
/**
 * 查找当前用户发出的所有申请
 * @param options
 * @param keyword
 * @param callback
 */
Relative.prototype.findRespondent=function(options,keyword,callback){
    Relative.find(options).populate(keyword).exec(function(err,datas){
        callback(err,datas)
    });
}
Relative.prototype.findForPage=function(obj,keyword,callback){
    var q=obj.search||{};                                       //查询条件
    var col=obj.columns||{};                                    //返回字段
    var query=Relative.find(q,col).skip(obj.page.skipFrom).limit(obj.page.limit).populate(keyword);
    query.exec(function(err, datas) {
        if (err) {
            callback(err, null, null);
        } else {
            Relative.count(q, function(err, count) {
                if (err) {
                    callback(err, null, null);
                } else {
                    var pageCount = Math.ceil(count / obj.page.limit);
                    callback(null, count,pageCount, datas);
                }
            });
        }
    });
}
/**
 * 根据条件删除对应的申请记录
 * @param options
 * @param callback
 */
Relative.prototype.deleteByOption=function(options,callback){
    Relative.remove(options,function(err){
        callback(err);
    })
}
/**
 * 根据关系表的id改变标记
 * @param id
 * @param options
 * @param callback
 */
Relative.prototype.updateFlagById=function(id,options,callback){
    Relative.update({_id:id},options,function(err){
        callback(err);
    })
}
module.exports = Relative;


